package cn.e4j.modular.crm.mapper;

import cn.e4j.core.dto.impl.Dto;
import cn.e4j.modular.crm.entity.GwcqT;
import cn.e4j.modular.crm.entity.GwcsT;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author sxc
 * @since 2019-01-18
 */
public interface GwcsTMapper extends BaseMapper<GwcsT> {
    /**
     * 查询正式订单维护信息列表
     */
    List<Map<String, Object>> listPage(@Param("page") Page<Object> page, @Param("dto") Dto dto);
    /**
     * 查询正式订单维护信息列表
     */
    List<Map<String, Object>> listPageOra(@Param("page") Page<Object> page, @Param("dto") Dto dto);


    /**
     * 查询根据正式订单号查询单身信息列表
     */
    List<Map<String, Object>> listGwcs(@Param("dto") Dto dto);
    /**
     * 查询根据正式订单号查询单身信息列表
     */
    List<Map<String, Object>> listGwcsOra(@Param("dto") Dto dto);

    /**
     * 查询正式订单是否是购物车转的数据
     */
    GwcqT getByGwcqdocno(@Param("GWCQENT") String GWCQENT, @Param("GWCQDOCNO") String GWCQDOCNO);

    /**
     * 查询活动信息列表
     */
    List<Map<String, Object>> listGwdc001(@Param("page") Page<Object> page, @Param("dto") Dto dto);
    List<Map<String, Object>> listGwdc001Ora(@Param("page") Page<Object> page, @Param("dto") Dto dto);
    /**
     * 查询产品税种单价信息列表
     */
    List<Map<String, Object>> listGwam(@Param("page") Page<Object> page, @Param("dto") Dto dto);
    /**
     * 查询产品税种单价信息列表
     */
    List<Map<String, Object>> listGwamOra(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    /**
     * 查询产品列表
     */
    List<Map<String, Object>> listGwda003(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    /**
     * 查询税种开窗列表
     */
    List<Map<String, Object>> listGweaPage(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    /**
     * 根据单号查询
     */
    List<Dto> listGwcs032(@Param("dto") Dto dto);

    Dto listGwak(@Param("GWAKENT") String GWAKENT, @Param("GWAK001") String GWAK001);
    Dto listGwakOra(@Param("GWAKENT") String GWAKENT, @Param("GWAK001") String GWAK001);

    Dto listGwaf(@Param("GWAFENT") String GWAFENT, @Param("GWAK001") String GWAK001);

    /**
     * 查询销售人员开窗列表
     */
    List<Map<String, Object>> listUserPage(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    String listParams(@Param("CODE") String CODE);

    /**
     * 查询日汇率
     */
    Dto listGwel(@Param("dto") Dto dto);

    /**
     * 根据月汇率
     */
    Dto listGwek(@Param("dto") Dto dto);

    /**
     * 根据单号查询订单信息
     */
    List<Dto> listGwcsInfo(@Param("dto") Dto dto);

    /**
     * 根据单号查询订单赠品信息
     */
    List<Dto> listGwcszInfo(@Param("dto") Dto dto);

    /**
     * 根据订单上的法人组织字段gwcsmlegal 从sys_org表找到ERP组织
     */
    Dto getDBinfo1(@Param("ent") String ent,@Param("gwcsmlegal") String gwcsmlegal);

    /**
     * 从ERP的数据库DSCSYS的表DSCMB中抓到MB003的值
     */
    Dto getDBinfo2(@Param("biz_code_") String biz_code_);

    /**
     * 判断订单是否已经抛过
     */
    Dto getUDF11(@Param("dto") Dto dto);

    /**
     * 判断客户编号在ERP中是否存在
     */
    Dto selectByGwak001(@Param("dto") Dto dto);

    /**
     * 获取登录者所在组织信息
     */
    Dto getSysOrg(@Param("id") String id);

    Dto getGwaz(@Param("ENT") String ent,@Param("GWCSMLEGAL") String gwcsmlegal);

    void insertCOPTD(@Param("dto") Dto dto);

    int insertCOPTC(@Param("dto") Dto dto);
    void deleteCOPTD(@Param("dto") Dto dto);

    Dto getGwakplant(@Param("dto") Dto dto);

    String getMaxTc002(@Param("dto") Dto str);

    /**
     * 查询购物车开窗列表
     */
    List<Map<String, Object>> getGwcqPage(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    void deleteData(@Param("dto") Dto dto);

    Dto getCOPTC(@Param("dto") Dto dto);

    void updateCOPTC(@Param("dto") Dto dto);

    void updateCOPTD(@Param("dto") Dto dto);

    /**
     * 查询客户对应的渠道
     */
    Dto getGwak(@Param("dto") Dto dto);
    /**
     * 查询客户对应的渠道
     */
    Dto getGwakOra(@Param("dto") Dto dto);

    /**
     * 根据活动编号获取活动对象、单据类型
     * @param dto
     * @return
     */
    Dto getGwdc004_007(@Param("dto") Dto dto);

    Dto getGwdb016(@Param("dto") Dto dto);
    Dto getGwdb016Ora(@Param("dto") Dto dto);

    Dto getGwdc023(@Param("dto") Dto dto);
    Dto getGwdc023Ora(@Param("dto") Dto dto);

    Dto getGwdc023_3(@Param("dto") Dto dto);
    Dto getGwdc023_3Ora(@Param("dto") Dto dto);

    Dto getGwdc023_zh(@Param("dto") Dto dto);
    Dto getGwdc023_zhOra(@Param("dto") Dto dto);

    Dto getGwdc023_3_zh(@Param("dto") Dto dto);
    Dto getGwdc023_3_zhOra(@Param("dto") Dto dto);

    List<Dto> getGwdc023_(@Param("dto") Dto dto);
    /**
     * 根据料号取默认仓库
     * @param dto
     * @return
     */
    Dto getGwam(@Param("dto") Dto dto);
    /**
     * 根据料号取默认仓库
     * @param dto
     * @return
     */
    Dto getGwamOra(@Param("dto") Dto dto);

    /**
     * 根据仓库获取仓库类型
     * @param dto
     * @return
     */
    Dto getGwas(@Param("dto") Dto dto);
    /**
     * 根据仓库获取仓库类型
     * @param dto
     * @return
     */
    Dto getGwasOra(@Param("dto") Dto dto);

    /**
     * 根据税种获取税率
     * @param dto
     * @return
     */
    Dto getGwea(@Param("dto") Dto dto);

    void delGwcszByGwcsz007(@Param("dto") Dto dto);

    Dto getGwdd(@Param("dto") Dto dto);

    String getGwdc003(@Param("dto") Dto dto);

    List<Dto> getGwcszData(@Param("dto") Dto dto);

    Dto getData1(@Param("dto") Dto dto);
    Dto getData2(@Param("dto") Dto dto);
    Dto getData1_jt(@Param("dto") Dto dto);
    Dto getData2_jt(@Param("dto") Dto dto);

    List<Dto> getGwcsData(@Param("page") Page<Object> page,@Param("dto") Dto dto);
    List<Dto> getGwcsData_(@Param("page") Page<Object> page,@Param("dto") Dto dto);

    List<Dto> getGwcs109(@Param("dto") Dto dto);

    Dto getGwdc004(@Param("dto") Dto dto);

    List<Dto> getGwdcz1(@Param("page") Page<Object> page,@Param("dto") Dto dto);

    List<Dto> getGwdcz2(@Param("page") Page<Object> page,@Param("dto") Dto dto);

    Dto getGwdc(@Param("dto") Dto dto);
    Dto getGwdcOra(@Param("dto") Dto dto);

    Dto getGwdc_(@Param("dto") Dto dto);
    Dto getGwdc_Ora(@Param("dto") Dto dto);

    Dto getGwdct(@Param("dto") Dto dto);
    Dto getGwdctOra(@Param("dto") Dto dto);

    Dto getGwdct_ml(@Param("dto") Dto dto);
    Dto getGwdct_mlOra(@Param("dto") Dto dto);

    Dto getGwdc_tj(@Param("dto") Dto dto);
    Dto getGwdc_tjOra(@Param("dto") Dto dto);

    Dto getGwdc_jieti(@Param("dto") Dto dto);
    Dto getGwdc_jietiOra(@Param("dto") Dto dto);

    Dto getGwdc_jieti_3(@Param("dto") Dto dto);
    Dto getGwdc_jieti_3Ora(@Param("dto") Dto dto);

    Dto getGwcsz005_006(@Param("dto") Dto dto);

    void updateGwcq(@Param("dto") GwcqT gwcqT);

    Dto getGwcs111(@Param("dto") Dto dto);

    Dto getGwaa(@Param("dto") Dto dto);

    Dto checkGwcs117(@Param("dto") Dto dto);

    Dto getAddress(@Param("dto") Dto dto);
    Dto getAddressOra(@Param("dto") Dto dto);

    Dto getYewu(@Param("dto") Dto dto);

    List<Dto> getMaxSaleProduct(@Param("dto") Dto dto);
    List<Dto> getMaxSaleProductOra(@Param("dto") Dto dto);

    List<Dto> getOnSaleProduct(@Param("dto") Dto dto);
    List<Dto> getOnSaleProductOra(@Param("dto") Dto dto);

    Dto getMB(@Param("dto") Dto dto);

    Dto getTD032(@Param("dto") Dto dto);

    Dto getGwdc_jt(@Param("dto") Dto dto);
    Dto getGwdc_jtOra(@Param("dto") Dto dto);

    /**
     * 组合时获取起订金额、起订数量
     * @param dto
     * @return
     */
    Dto getGWDCT003_GWDCT004(@Param("dto") Dto dto);

    /**
     * 创建临时表
     */
    void createTable(@Param("tableName") String tableName);

    void insertLS(@Param("dto") Dto dto);

    List<Dto> getLs(@Param("dto") Dto dto);

    Dto getGwakCount(@Param("dto") Dto dto);
    Dto getGwamCount(@Param("dto") Dto dto);
    Dto getGwdcCount(@Param("dto") Dto dto);

    /**
     * 根据单据日期、预交货日期、订单类型、客户分单
     */
    List<Dto> getLsByGroup(@Param("tableName") String tableName);

    //获取无活动的单据
    List<Dto> getWuhuodong(@Param("dto") Dto dto);

    /**
     * 组合+裸价的活动编号
     * */
    List<Dto> huodongType1(@Param("dto") Dto dto);

    Dto checkHuoDong1(@Param("dto") Dto dto);
    Dto checkHuoDong1Ora(@Param("dto") Dto dto);

    List<Dto> getHuoDongList(@Param("dto") Dto dto);
    List<Dto> getHuoDongListOra(@Param("dto") Dto dto);

    Dto getMaxGwcsseq(@Param("dto") Dto dto);

    Dto checkHuoDong2(@Param("dto") Dto dto);
    List<Dto> getHuoDongList2(@Param("dto") Dto dto);

    List<Dto> huodongType2(@Param("dto") Dto dto);

    Dto checkHuoDongSum(@Param("dto") Dto dto);
    Dto getMinGwdc020(@Param("dto") Dto dto);

    Dto getPriceByCount(@Param("dto") Dto dto);
    Dto getPriceByCountOra(@Param("dto") Dto dto);

    List<Dto> getHuoDongList3(@Param("dto") Dto dto);
    List<Dto> getHuoDongList3Ora(@Param("dto") Dto dto);

    /**
     * 根据客户编号+产品编号+对象类型获取结算价
     */
    Dto getGwdb1(@Param("dto") Dto dto);
    /**
     * 根据客户编号+产品编号+对象类型获取结算价
     */
    Dto getGwdb1Ora(@Param("dto") Dto dto);

    /**
     * 根据销售渠道+产品编号获取结算价
     */
    Dto getGwdb2(@Param("dto") Dto dto);
    /**
     * 根据销售渠道+产品编号获取结算价
     */
    Dto getGwdb2Ora(@Param("dto") Dto dto);

    List<Dto> getGWCS045(@Param("dto") Dto dto);

    Dto getGwdfCount(@Param("dto") Dto dto);
    Dto getCopthCount(@Param("dto") Dto dto);

    List<Dto> getAdmmf(Dto dto);

    List<Map<String, Object>> getGwcsdocnoData(@Param("page") Page<Object> page,@Param("dto") Dto dto);
}
